본문으로 건너뛰기

Part4 - 5장. 프로그램 성능

비동기 패턴 덕분에 성능 좋은 코드를 작성할 수 있었다.

하지만 근본적으로 단일 이벤트 루프 스레드에 묶여있기 때문에 한계가 있다.

이러한 문제를 극복하기 위한 3가지를 알아보았다.


1. 웹 워커

  • 비동기 이벤트를 이용하여 스레드 간에 메시지를 교환
  • 자바스크립트 파일을 개별 스레드 단위로 실행
  • 메인 UI 스레드의 응답성을 높임
  • 자원을 많이 소모하거나 시간이 오래 걸리는 작업을 다른 스레드로 분산 가능

2. SIMD (Single Instruction, Multiple Data)

  • CPU 수준의 병렬 수학 연산을 대량 데이터에 적용하는 기법
  • 자바스크립트 API를 통해 병렬 데이터 연산 성능을 높임
  • 고성능 그래픽/게임/영상 처리 등에 적합

3. asm.js

  • GC(가비지 컬렉션)나 강제 타입 변환 등 최적화가 어려운 영역을 피함
  • 자바스크립트 엔진이 이런 부류의 코드를 자동 인식하도록 설계된 부분집합
  • 결과적으로 공격적인 최적화를 유도할 수 있음